#ifndef IBUFFER_H
#define IBUFFER_H

class IBuffer: public Buffer{
private:

	bool isFirstRun;

	bool buffer0isEmpty;
	bool buffer1isEmpty;
	bool buffer2isEmpty;

	unsigned int fileIndex;

	//return next char from current buffer
	char getCharFromCurrentBuffer();

public:
	IBuffer();
	~IBuffer();

	//Initialization
	bool init(const char* inputfile);

	//return next char of internal buffer
	char getChar();

	//go one step back in internal buffer
	int ungetChar(size_t numberOfChars = 1);

	// copies the last characters from buffer to given position (lexem storage)
	int copyString(size_t lastChars, char* position);

	//functionality of thread
	bool run();

};


#endif
